/* - - - - - - 采用 Promise 方式获取文件或目录的状态信息 - - - - - - */
const fs = require('fs');
const path = require( 'path' );

const pathname = path.resolve( __filename ) ;

let executor = (resolve,reject) =>{
    // 采用异步方式获取 pathname 所表示文件或目录的状态
    fs.stat( pathname , (error,stats) => {
        // 若获取状态时发生异常
        if( error ) {
            // 则调用执行器参数中的 reject 方法
            // 这会导致 Promise实例 由 待定状态 变化为 已拒绝状态
            reject( error );
            // 让当前函数立即结束，从而避免再执行后续代码
            return;
        }
        // 若能够正常获取状态则调用 执行器参数中的 resolve 函数
        // 这会导致 Promise实例 由 待定状态 转化为 已兑现状态
        resolve( stats );
    });
}

let promise = new Promise( executor );

promise.then( stats => {
    console.log( stats );
    console.log( 'is directory: ' + stats.isDirectory() );
    console.log( 'is file: ' + stats.isFile() );
}).catch( error => {
    console.log( error.name , '=>', error.message );
}).finally( () => {
    console.log( 'ending' );
});
